// 解构的默认值undefined相当于什么都没有，b是默认值
// let[a,b="maya"]=['玛雅',undefined]
// console.log(a+b);
// 玛雅maya

// undefined 和 null的区别 
// let[a,b='maya']=['玛雅',null];
// console.log(a+b);
// 玛雅null


// 对象的解析赋值
// let{foo,bar}={bar:'玛雅',foo:'maya'};
// console.log(foo+bar);
// maya玛雅

// 圆括号的使用
// let foo;
// ({foo}={foo:"maya"});
// console.log(foo);

// 字符串的解构
// const[a,b,c,d,e]='天线宝宝！';
// console.log(a);
// console.log(b);
// console.log(c);
// console.log(d);
// console.log(e);


// 扩展运算符
// 对象扩展运算符
// function taiji(...arg){
//     console.log(arg[0]);
//     console.log(arg[1]);
//     console.log(arg[2]);
//     console.log(arg[3]);
// }
// taiji(1,2,3);

// 声明两个数组arr1和arr2，
// let arr1=['www','taiji','com'];
// let arr2=arr1;
// console.log(arr2);
// let arr2=[...arr1];
// console.log(arr2);
// arr2.push('li');
// console.log(arr2);
// console.log(arr1);

// function tai(first,...arg){
//   console.log(arg.length);
//   console.log(first);
//   console.log(arg);
// }
// tai(0,1,2,3,4,5,6,7);


// 字符串模板对运算的支持
// let a=1;
// let b=2;
// let result=`${a+b}`;
// console.log(result);
// console.log(typeof result);
// document.write(result);

// let a=1;
// let b=2;
// let result=a+b;
// console.log(result);
// console.log(typeof result);
// document.write(result);

// 字符串查找
// ES5的写法
// let li='你好';
// let blog=`<b>非常高兴</b>${li}`;
// // ES6直接使用include就可以判断，不再返回索引值
// document.write(blog.includes(li));
// // 判断开头是否存在
// document.write(blog.startsWith(li));
// // 判断结尾是否存在
// document.write(blog.endsWith(li));

// 整数取值范围操作
// let maya=Math.pow(2,53)-1;
// console.log(maya);
// // 最大安全整数
// console.log(Number.MAX_SAFE_INTEGER);
// // 最小安全整数
// console.log(Number.MIN_SAFE_INTEGER);
// // 安全整数判断
// console.log(Number.isSafeInteger(maya));

// ES6新增的数组
// let json={
//     '0':'maya',
//     '1':'玛雅',
//     '2':'天线宝宝',
//     length:3
// }
// console.log(json);
// let arr=Array.from(json);
// console.log(arr);

// Array.of方法
// let arr=Array.of(3,4,5,6);
// console.log(arr);

// find实例方法
// let arr=[1,2,3,4,5,6,7,8];
// var v=arr.find((value,index,arr)=>{
//     return index>4;
// });
// console.log(v);
//6


// let arr=[1,2,3,4,5,6,7,8];
// var v=arr.find((value,index,arr)=>{
//     return value>4;
// });
// console.log(v);
// 5


// findIndex()方法 
// let arr=[1,2,3,4,5,6,7,8];
// var i=arr.findIndex((value)=>value>4);
// console.log(i);
// // 4

// // filter方法，不同之处在于filter返回的是数组
// let arr=[1,2,3,4,5,6,7,8];
// var i=arr.filter((value)=>value>4);
// console.log(i);

// // 数组去重
// var myArr=[1,3,4,5,6,3,7,4]
// console.log(myArr.filter((value,index,arr2)=>arr2.indexOf(value)===index));


// // fill左闭右开
// let arr=['li','天','地','万物'];
// arr.fill('web',1,3);
// console.log(arr);
// // ['li','web','web','万物']

// // 数组循环
// let arr=['li','天','地'];
// for(let index of arr.keys()){
//     console.log(index);
// } 

// // 同时输出数组的内容和索引，我们用entries这个实例方法，配合我们的for...of循环
// let arr=['li','天','地'];
// let list=arr.entries();
// console.log(list);
// for(let[index,val] of arr.entries()){
//     console.log(index+`:`+val);
// }

// // for...of数组索引
// let arr=['li','天','地'];
// for(let index of arr.keys()){
//     console.log(index);
// }

// // entries方法,切分数组
// let arr=['li','天','地'];
// let list=arr.entries();
// console.log(list);
// console.log(list.next().value);
// console.log(`**********`);
// console.log(list.next().value);
// console.log(`&&&&&&&&&&`);
// console.log(list.next().value);

// // ES5箭头函数
//  function add(a,b=1){
//     if(a===0){
//         // `use=strict`
//         throw new Error('This is error');
//     }
//     return a+b;
// }
// console.log(add(0));
// console.log(add.length);
// // 此处得到的参数的个数是必须传递的参数的个数，如果有默认值则不计入其内
// // 有严谨模式`use strict`函数有默认值的时候是不行的
// function add(a,b=1){
//     'use=strict'
//     return a+b;
// }
// console.log(add.length);


// // 默认值 es6箭头函数
// var add=(a,b=2)=>a+b;
// console.log(add(1));//3
// var add=(a,b=1)=>{
//     console.log('taiji');
//     return a+b;
// }
// console.log(add(1));
// console.log(add(2));
// console.log(add(3));

// // 对象的函数解析
// let a=undefined;
// function fun(a=4){
//     console.log(a);
// }
// fun(a);

// // 对象的函数解析
// let json={
//     a:'li',
//     b:undefined
// }
// function fun({a,b='web'}){
//     console.log(a,b);
// }
// fun(json);



// // 数组的函数解析
// let arr=['li','天','地'];
// function fun(a,b,c,d){
//     console.log(a,b,c,d);
// }
// fun(...arr);


// // in的用法
// let obj={
//     a:'lo',
//     b:'萝莉'
// }
// console,log('c' in obj);//false


// // 数组判断
// let arr=[,,,];
// console.log(arr.length);
// console.log(arr[0]);
// // 注意：这里的0指的是数组的下标位置是否为空
// console.log(0 in arr);
// let arr1 =['maya','玛雅'];
// console.log(0 in arr1);

// // 数组遍历forEach
// let arr=['maya','玛雅','tiji'];
// arr.forEach((val,index)=>console.log(index,val));

// // 数组遍历filter
// let arr=['maya','玛雅','tiji'];
// arr.filter(x=>console.log(x));

// // 数组遍历some
// let arr=['maya','玛雅','tiji'];
// arr.some(x=>console.log(x));


// // 数组遍历 map替换
// let arr=['maya','玛雅','tiji'];
// console.log(arr.map(x=>'web'));

// // 数组转换成字符串
// let arr=['maya','玛雅','tiji'];
// console.log(arr.toString());
// console.log(arr.join('|'));


// 对象
// 对象赋值
let name="maya";
let skill ='web';
var obj={name,skill};
console.log(obj);
// key值  的构建
let key="skill";
var obj ={
    [key]:'skill'
}
console.log(obj[key]);
// Object.is()对象比较
let obj1={name:'11'};
let obj2={name:'11'};
console.log(obj1.name===obj2.name);
console.log(Object.is(obj1.name,obj2.name));
